'\" t
.\" Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
.\"     <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH sched_getcpu 3 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
sched_getcpu \- determine CPU on which the calling thread is running
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <sched.h>
.P
.B int sched_getcpu(void);
.fi
.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.P
.BR sched_getcpu ():
.nf
    Since glibc 2.14:
        _GNU_SOURCE
    Before glibc 2.14:
        _BSD_SOURCE || _SVID_SOURCE
            /* _GNU_SOURCE also suffices */
.fi
.SH DESCRIPTION
.BR sched_getcpu ()
returns the number of the CPU
on which the calling thread is currently executing.
.SH RETURN VALUE
On success,
.BR sched_getcpu ()
returns a nonnegative CPU number.
On error, \-1 is returned and
.I errno
is set to indicate the error.
.SH ERRORS
.TP
.B ENOSYS
This kernel does not implement
.BR getcpu (2).
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.na
.nh
.BR sched_getcpu ()
T}	Thread safety	MT-Safe
.TE
.SH STANDARDS
GNU.
.SH HISTORY
glibc 2.6.
.SH NOTES
The call
.P
.in +4n
.EX
cpu = sched_getcpu();
.EE
.in
.P
is equivalent to the following
.BR getcpu (2)
call:
.P
.in +4n
.EX
int c, s;
s = getcpu(&c, NULL);
cpu = (s == \-1) ? s : c;
.EE
.in
.SH SEE ALSO
.BR getcpu (2),
.BR sched (7)
